Old (Unmaintained) Nobdy Wiki
Welcome to the Nobdy Wiki nobdy is a vehicle data abstraction service and multiplexing daemon. Screenshots Overview Goal: To implement a featureful, stable middleware suite that provides an extensible and flexible interface to automotive sensor and actuator buses for the purpose of enabling car manufacturers, owners and developers the power to create new software that enhances the safety, economy and enjoyment of the driving experience. Design: the best resource to understand the architecture of nobdy is the presentation at the 2011 San Francisco MeeGo Conference by tripzero. License: GPL 2 Installation System Requirements #GNU Toolchain (gcc, g++, make, binutils . . . ) #Qt 4.7 or greater #QJson (for select plugins) #git Supported Platforms: Ubuntu 11.10 (Oneiric Ocelot) or greater; MeeGo-IVI 1.2.0 or greater; Tizen (eventually) Supported Architectures: x86 and ARMv7; in general architectures where Qt 4.7 or greater will run. Sources *nobdy *libobd and its documentation *genericobd2 plugin *QJson *Qt How to Install from Source #Use your system's package manager to install Qt, Qt-mobility and their headers. #If necessary, install and configure git, qmake, make and pkg-config using the system package manager. #Building nobdy may require a newer version of qjson than your distro provides. If you need to compile qjson, you will also need to install cmake. #On Ubuntu 11.10 or Debian, optionally install deb source packages from the OpenICE Launchpad PPA. The packages you need are nobdy-dev, libobd-dev and qjson-712b15-dev. #On other systems, use "git clone" to dowload copies of the nobdy, libobd, genericobd2 and qjson repos from gitorious. #For qjson, cd to the top level directory and do the following: : mkdir build : cd build : cmake .. : make : sudo make install 6. For each of the libobd, nobdy and genericobd2 repos in that order, execute the following commands: * *: cd *: qmake * : make * *: sudo make install *Note that the order of installation matters, as genericobd2 depends on libobd and nobdy, which itself depends on qjson. Binary Packages Binary packages for Ubuntu 11.10 are available on the OpenICE Launchpad PPA. Copies of the (rather large) Qemu-KVM Ubuntu-11.10 virtual machine used to build the images is available upon request, as are the (much smaller) debian/* build files. The total installed size of the binary packages as of 1/3/2012 is 2.6 MB. How to install the binary packages: #sudo apt-add-repository ppa:openice/ppa #sudo apt-get update #sudo apt-get install libobd #sudo apt-get install qjson-712b15 #sudo apt-get install nobdy These commands create an executable file /usr/bin/nobdy. They have been tested on a fresh Ubuntu 11.10 Qemu-KVM. Proceed with the "Running Nobdy" instructions. Running Nobdy 'General information' There are both providers and subscribers components of the nobdy system. The plugins.xml file configures nobdy with a choice of components. Edit the system-wide default configuration file /etc/nobdy/plugins.xml, or create multiple XML configuration files in your local directory and specify one at run-time with "-c" on the command-line. Most Linux systems create USB device files on-the-fly. If you use a USB scanner, be sure that the device port your USB connects to is the one nobdy communicates with by typing "ls /dev/tty/USB*" and comparing to the port in the XML configuration file. Also make sure (possibly using sudo command) that the /dev/tty/USB* file is readable and writable by your account. The data flow in an installed system is described by the following diagram: : data -> plugin -> nobdy -> plugins With unit tests the data flow is: : data -> plugin -> nobdy -> subscriber plugin with websocket enabled -> page Here the data is the OBD connection hub for an installed system or an OBDSim-interpreted SQLite database for the development system. 'Running with OBDSim' OBDSim is the way to get started with nobdy if you don't yet own an OBDII-compatible scanner or have access to a car with an OBDII port. Even when a scanner and car are available, using OBDSim to test changes from the comfort of a desk is more convenient than typing at a keyboard in the car. OBDSim is extensively documented. 'Nobdy Providers' Providers are the data sources that inject vehicle sensor readings into the nobdy framework. The choices are: #OpenCV, class: cvimageprovider; ( OpenCV is an open source sdk for adding computer vision to an application) #GPSD, class: gpsdprovider; (Used for nobdy to retrieve gps data) #OBD-II, class: simprovider; (Used for nobdy to retrieve data store of recorded sensor data - most likely by the logger subscriber) OBDSim reads data from an SQLite database containing "obd", "trip", and "gps" sections (dbs). The package provides the example file "ces2012.db" which is used by default by the command-line tools. An older version, ces2010.db, is also available. The db files contain 1000 time-stamped records of vehicle sensor values covering about 500 intervals. The shell script loggerprovider.websocket.sh and configuration file loggerprovider.websocket.xml support testing nobdy with the logger provide a browser-based method of monitoring nobdy input from a web page. The OBDSim implementation of web-based monitoring also reads the "ces2012.db" file. ---- 'Nobdy Subscribers' Nobdy subscribers consume the logger data sent by the providers OBDSim and loggerprovider.websocket.sh through the nobdy framework. The choices are: loggerprovider - this is used to record data which the provider simprovider may access examplesubscriber tcpsubscriber dbussimple (Simple DBus subscriber) Unit Test: Websockets provide the pipe through which 'nobdy' sends data to a web client. In the nobdy source folder nobdy/unittests, there are xml and shell script files that support the browser access to nobdy data. Webpage monitoring: genericobd2.tcpsubscriber.websocket.logger.test.sh obdsim.genericobd2.websocket.logger.xml 'plugins File for dbussimple Subscriber and OBDII Hardware Provider' : : : /dev/ttyUSB0 : 115200 : false : : ' : 'plugins File for examplesubscriber Subscriber and OBDII Hardware Provider : : /dev/ttyUSB0 : 115200 : false : ' ' : Plugins *Logger/simulation provider *OBD-II provider *GPSD provider *DCDC-USB provider *OpenCV provider *Logging subscriber *Tcp subscriber (see also tcp protocol ) *DBus subscriber Developing with nobdy *NobdyStream qt/c++ interface *tcp protocol *dbus interface *libobd documentation * bluetooth connectivity Resources General information about car DIY, car computer designs and parts at mp3car.com General information about git in Jon Loeliger's Version Control with Git ebook and Scott Chacon's "A Tale of Three Trees" presentation. (Add more!) Contact Questions? Please ask on #linuxice on freenode IRC. Latest activity Category:Browse